package com.dhcc.bpm.modules.api.vo;

import com.dhcc.bpm.modules.api.entity.BaseProduct;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.springblade.core.mp.base.Excel;

import java.util.List;

/**
 * @ClassName BaseProductVO
 * @Description 基础产品表视图实体类
 * @Author daina
 * @Date 2020/2/25 16:02
 * @Version V1.0
 * @Copyright: 2020 东华软件 . All rights reserved.
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "BaseProductVO对象", description = "基础产品表")
public class BaseProductVO extends BaseProduct {
	private static final long serialVersionUID = 1L;


	/**
	 * 开始时间
	 */
	@ApiModelProperty(value = "开始时间")
	@Excel(name = "开始时间")
	private String startDate;

	/**
	 * 结束时间
	 */
	@ApiModelProperty(value = "结束时间")
	@Excel(name = "结束时间")
	private String endDate;

	/**
	 * 调用方式
	 */
	@ApiModelProperty(value = "调用方式")
	@Excel(name = "调用方式")
	private String applyType;
	/**
	 * 注册中心服务名
	 */
	@ApiModelProperty(value = "注册中心服务名")
	@Excel(name = "注册中心服务名")
	private String applicationName;
	/**
	 * 服务访问协议
	 */
	@ApiModelProperty(value = "服务访问协议")
	@Excel(name = "服务访问协议")
	private Long accessProtocol;
	/**
	 * 后端服务id
	 */
	@ApiModelProperty(value = "后端服务id")
	@Excel(name = "后端服务id")
	private Long backId;
	//调用外部地址
	@Excel(name = "调用外部地址")
	private String ip;
	/**
	 * 交易量
	 */
	@JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
	@Excel(name = "交易量")
	private Long num;
	/**
	 * 成功量
	 */
	@JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
	@Excel(name = "成功量")
	private Long successNum;
	/**
	 * 失败量
	 */
	@JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
	@Excel(name = "失败量")
	private Long failNum;
	/**
	 * 成功率
	 */
	@Excel(name = "成功率")
	private String successRate;
	/**
	 * 平均响应时间
	 */
	@JsonSerialize(using = ToStringSerializer.class, nullsUsing = NullSerializer.class)
	@Excel(name = "平均响应时间")
	private Double responseTime;
	/**
	 * 媒体类型
	 */
	private String backserviceType;

	/**
	 * 后端服务外部地址列表集合
	 */
	private List<String> excallKeysNames;
	/**
	 * 后端服务外部端口列表集合
	 */
	private List<String> excallKeysPort;

	private  String  sysName;
	/**
	 * 第三方节点状态
	 */
	private String serverStatus;

	private int isFrom; //1 ---表示首页的查询

	private String begDate;
	private String endDate1;
	private String env;


	/**
	 * xml报文配置文件路径
	 */
	@Excel(name = "配置文件xmlFileFullPath路径")
	private String xmlFileFullPath;
	/**
	 * xml报文配置文件名称
	 */
	@Excel(name = "配置文件xmlFileRealname名称")
	private String xmlFileRealname;

	/**
	 * json报文配置文件路径
	 */
	@Excel(name = "配置文件jsonFileFullPath路径")
	private String jsonFileFullPath;
	/**
	 * json报文配置文件名称
	 */
	@Excel(name = "配置文件jsonFileRealname名称")
	private String jsonFileRealname;

	/**
	 * efet报文配置文件路径
	 */
	@Excel(name = "配置文件efetFileFullPath路径")
	private String efetFileFullPath;
	/**
	 * efet报文配置文件名称
	 */
	@Excel(name = "配置文件efetFileRealname名称")
	private String efetFileRealname;

	/**
	 * kv报文配置文件路径
	 */
	@Excel(name = "配置文件kvFileFullPath路径")
	private String kvFileFullPath;
	/**
	 * kv报文配置文件名称
	 */
	@Excel(name = "配置文件kvFileRealname名称")
	private String kvFileRealname;

	/**
	 * fixed报文配置文件路径
	 */
	@Excel(name = "配置文件fixedFileFullPath路径")
	private String fixedFileFullPath;
	/**
	 * fixed报文配置文件名称
	 */
	@Excel(name = "配置文件fixedFileRealname名称")
	private String fixedFileRealname;

	/**
	 * sep报文配置文件路径
	 */
	@Excel(name = "配置文件sepFileFullPath路径")
	private String sepFileFullPath;
	/**
	 * sep报文配置文件名称
	 */
	@Excel(name = "配置文件sepFileRealname名称")
	private String sepFileRealname;

	/**
	 *  wsdl文件路径
	 */
	@Excel(name = ".wsdl文件wsdlFileFullPath路径")
	private String wsdlFileFullPath;
	/**
	 * wsdl配置文件名称
	 */
	@Excel(name = "配置文件wsdlFileRealname名称")
	private String wsdlFileRealname;
	/**
	 * wsdl 文件  下载路径
	 */
	@Excel(name = " wsdl 文件  下载路径")
	private String wsdlFileDownPath;

	/**
	 *是否开启任务调度
	 */
	private String isTask;
	/**
	 * 任务调度配置
	 */
	private String taskId;

	private List<Task>  taskList;

	@Data
	@Builder
	@NoArgsConstructor
	@AllArgsConstructor
	public static class  Task{
		private String serverCode;
		private String codePath;
		private String ip;
		private Long port;
	}
}
